home *** CD-ROM | disk | FTP | other *** search
/ Deutsche Edition 1 / Deutsche Edition 1.iso / amok / 011-020 / amok12 / module / module.doc < prev    next >
Text File  |  1993-11-04  |  5KB  |  127 lines

  1.                     Bernd Preusing Oct-88
  2.  
  3.  Erläuterungen zu den Modulen:
  4.  Die Definitions-Module sollten auf jeden Fall genau gelesen werden,
  5.  hier sind nur einige Hinweise und der 'Grobzweck' beschrieben!
  6.  
  7.  
  8.      ArraySort:
  9.  
  10.  Sort sortiert einen ARRAY OF ADDRESS in aufsteigender Reihenfolge.
  11.  Dieser ARRAY kann ein ARRAY OF POINTER TO ... oder auch ein
  12.  ARRAY OF LONGINT o.ä. sein.
  13.  Die eigentliche Sortierung erfolgt durch den Aufruf der Prozedur
  14.  'less' vom Typ prLess, die die beiden übergebenen Adressen
  15.  interpretieren kann, wie sie will.
  16.  Dadurch kann man also beliebige Objekte wie RECORDs, Strings oder
  17.  Zahlen sortieren. ein kleines Beispiel ist in SortDemo gezeigt,
  18.  welches auch Timer2 benutzt.
  19.  
  20.  
  21.      Timer2:
  22.  
  23.  Viel Leute haben Probleme, die Prozeduren des Moduls Timer zu benutzen.
  24.  Das ist auch kein Wunder, denn der übergebene Parameter
  25.  timer: ADDRESS ist nichts wert, weil er vom Compiler wieder
  26.  überschrieben wird! CODE-Prozeduren können einzig und allein von
  27.  Library-Modulen exportiert werden (jedenfalls bis zur heutigen
  28.  Compiler-Version)!!
  29.  Also schrieb ich Timer2.mod, das diese Prozeduren und einige weitere
  30.  zur Verfügung stellt, ohne daß man den ganzen Overhead des Device-
  31.  Öffnens usw. in Kauf nehmen muß.
  32.  U.A. sind hier auch zwei Prozeduren enthalten, die eine Stoppuhr
  33.  emulieren. Zu Beginn ruft man StartTime() auf, am Ende StopTime(t).
  34.  t ist vom Typ TimeVal und enthält dann die seit StartTime vergangene
  35.  Zeit.
  36.  Des weiteren gibt es GetSysTime(t), das die aktuelle Systemzeit in
  37.  t ablegt. Ein SetsysTime habe ich absichtlich nicht implementiert,
  38.  weil es bei falscher Handhabung zu Problemen führt, und außerdem
  39.  wird die Systemzeit ja hoffentlich beim Einschalten des Amiga
  40.  gesetzt.
  41.  
  42.  
  43.      InOut2:
  44.  
  45.  ist ein erweitertes InOut, welches folgende Prozeduren zusätzlich
  46.  enthält:
  47.  
  48.      SetInput(name:ARRAY OF CHAR);
  49.      SetOutput(name:ARRAY OF CHAR);
  50.  Diese beiden erlauben das direkte Öffnen eines IO-Files, ohne daß
  51.  der Benutzer wie bei OpenInput, OpenOutput eine Eingabe machen muß,
  52.  denn diese hat er ja evtl. schon als Programm-Parameter übergeben.
  53.  
  54.      WriteCount(adr: ADDRESS; count: LONGINT)
  55.      WriteCount(adr: ADDRESS; count: LONGINT)
  56.  Damit kann man nun alles lesen und schreiben und das FileSystem
  57.  wird in den meisten Fällen überflüssig.
  58.  
  59.      ReadLn(VAR str: ARRAY OF CHAR; VAR len: INTEGER);
  60.  Liest eine Textzeile ein, die mit eol (line feed) beendet ist.
  61.  ReadString liest ja nur bis zum ersten Trennzeichen, welches auch
  62.  ein Leerzeichen sein kann! Außerdem ist ReadLn erheblich schneller,
  63.  Interessierte sollten sich die Implementation ansehen!
  64.  
  65.  
  66.      TwoFiles:
  67.  benutzt InOut2, um 1 oder 2 Files als Ein- und/oder Ausgabe zu
  68.  setzen. Dabei benutzt es die Kommandozeilen- bzw. Workbench-
  69.  Parameter, um die Filenamen zu erhaltem. Falls keine Parameter
  70.  (mehr) da sind, wird der Benutzer gefragt.
  71.  Dies ergibt ein Verhalten ähnlich m2c und m2l.
  72.  OpenFiles(in,out:BOOLEAN):BOOLEAN
  73.  
  74.  Ein Hauptprogramm sieht dann z.B. nur noch so aus:
  75.     WHILE OpenFiles(TRUE,TRUE) DO
  76.       InOut2.Read... InOut2.Write...
  77.     END;
  78.  Es wird jeweils ein File für Lesen und eins für Schreiben geöffnet
  79.  und bearbeitet, bis keine Parameter mehr da sind oder der Benutzer
  80.  einfach RETURN drückt.
  81.  OpenFiles(TRUE,FALSE) öffnet nur ein Input-File, OpenFiles(FALSE,TRUE)
  82.  öffnet nur ein Output-File. OpenFiles(FALSE,FALSE) ist sinnlos!
  83.  Falls eine OptProcedure gesetzt wurde, wird sie beim Auftauchen eines
  84.  Parameters, der mit '-' beginnt, aufgerufen. Sie kann dann die Option
  85.  auswerten.
  86.  Falls Files für Output geöffnet werden, wird vorher geprüft, ob sie
  87.  bereits existieren. In diesem Fall wird der Benutzter gefragt, ob
  88.  das File gelöscht werden soll.
  89.  Dieses Verhalten kann mittels SetAsk(FALSE) abgeschaltet werden.
  90.  
  91.  
  92.      TextWindow:
  93.  öffnet ein 4farb-Backdrop-Window auf einem eigenen Screen (wie m2emacs)
  94.  und bietet etliche Prozeduren zur Text-Ein- und Ausgabe sowie einige
  95.  Spezialitäten z.B. für Menüs o.ä.
  96.  
  97.  
  98.      Assembler:
  99.  ist nur ein Def-Modul (* $M- *), welches ich brauchte, um die Originale
  100.  einiger M2Amiga-Module zu rekonstruieren. Es sollte in dieser Form
  101.  nicht benutzt werden, weil es von einigen der System-Module importiert
  102.  wird, aber eben nicht das Original IST. Hier kommt der Linker dann
  103.  ins Schleudern, weil die 'Keys' nicht übereinstimmen.
  104.  Wer es benutzen will, sollte es in Assembler2 umbenennen und neu
  105.  kompilieren!
  106.  
  107.  
  108.      XDos:
  109.  ist ein $M- dos.library-Modul, welches Zugang zu ALLEN dos-Funktionen
  110.  bietet. Es gibt eine ganze Reihe, die nicht dokumentiert sind.
  111.  Leider weiß auch ich nicht, was sie bewirken. Einige werden vom
  112.  Modul Terminal benutzt. Wer weiß etwas Genaues????
  113.  
  114.  
  115.      Janus:
  116.  ist ein $M- janus.library-Modul (die janus.library verwaltet die PC-
  117.  Karte). Um dieses Modul zu benutzen benötigt man ein gehörige Portion
  118.  Wissens über diese Library und die PC-Karte. Ich hatte noch nicht die
  119.  nötige Lust, eine entsprechende Dokumentation zu schreiben, zumal ich
  120.  immer noch hoffe, daß Commodore dies endlich einmal nachholt!
  121.  Ich benutze dies Modul, um Befehle an den PC zu geben, ohne daß ein
  122.  PC-Window geöffnet sein muß. Ein Demo kann ich aber leider noch nicht
  123.  liefern, weil es noch nicht 100%ig funktioniert. Interessenten bitte
  124.  bei mir melden!
  125.  
  126. ENDE
  127.